import { get, post, put, del, getWithPagination, postWithPagination } from './commonApi.js'

/**
 * 教师相关API接口
 */
export const teacherApi = {
  /**
   * 获取教师列表（分页查询）
   * @param {Object} options - 分页选项
   * @param {number} options.currentPage - 当前页码，默认为1
   * @param {number} options.size - 每页数量，默认为10
   * @param {Object} options.otherParams - 其他查询参数
   * @returns {Promise} 分页教师列表数据
   */
  getTeacherList: (options = {}) => {
    return getWithPagination('/teacher/list', options)
  },

  /**
   * 获取教师详情
   * @param {string} teacherId - 教师ID
   * @returns {Promise} 教师详情数据
   */
  getTeacherDetail: (teacherId) => {
    return get(`/teacher/${teacherId}`)
  },

  /**
   * 新增教师
   * @param {Object} teacherData - 教师数据
   * @param {string} teacherData.name - 教师姓名
   * @param {string} teacherData.office - 所属教研室
   * @returns {Promise} 创建结果
   */
  addTeacher: (teacherData) => {
    return post('/teacher/add', teacherData)
  },


  /**
   * 更新教师信息
   * @param {Object} teacherData - 教师数据
   * @param {string} teacherData._id - 教师ID
   * @param {string} teacherData.name - 教师姓名
   * @param {string} teacherData.office - 所属教研室
   * @returns {Promise} 更新结果
   */
  updateTeacherInfo: (teacherData) => {
    
    return post('/teacher/update', teacherData)
  },

  /**
   * 删除教师
   * @param {string} id - 教师ID
   * @returns {Promise} 删除结果
   */
  deleteTeacher: (id) => {
    return del('/teacher/del', { id })
  },

  /**
   * 搜索教师
   * @param {Object} options - 搜索选项
   * @param {string} options.keyword - 搜索关键词（姓名或教研室）
   * @param {number} options.currentPage - 当前页码
   * @param {number} options.size - 每页数量
   * @returns {Promise} 搜索结果
   */
  searchTeachers: (options = {}) => {
    return getWithPagination('/teacher/search', options)
  },

  /**
   * 根据教研室获取教师列表
   * @param {string} office - 教研室名称
   * @param {Object} options - 分页选项
   * @returns {Promise} 教师列表
   */
  getTeachersByOffice: (office, options = {}) => {
    return getWithPagination('/teacher/list', {
      ...options,
      otherParams: {
        office,
        ...options.otherParams
      }
    })
  }
}

export default teacherApi 